import request from "@/utils/request";
// 菜单基础URL
const MENU_BASE_URL = "/v3/auth/customer";

class CustomerAPI {
  static updatecustomer(data: updatecustomer) {
    return request({
      url: `${MENU_BASE_URL}/update`,
      method: "PUT",
      data: data,

      // params: {
      //   id: ids,
      // },
    });
  }

  /**
   * 删除用户
   */
  static deletecustomer(ids: string) {
    return request({
      url: `${MENU_BASE_URL}/delete/` + ids,
      method: "DELETE",
      // params: {
      //   id: ids,
      // },
    });
  }

  /**
   * 根据设备编号获取设备信息(模糊查询)
   */
  static selectByName(deviceSN: string) {
    return request<any, deviceVOData>({
      url: `${MENU_BASE_URL}/selectByName`,
      method: "get",
      params: {
        customerName: deviceSN,
      },
    });
  }

  /**
   * 获取当前用户客户树状列表
   * <p/>
   * 无需传入角色，后端解析token获取角色自行判断是否拥有路由的权限
   *
   * @returns 路由列表
   */
  static getCustomerTree() {
    return request<any, OptionType>({
      url: `${MENU_BASE_URL}/getCustomerTree`,
      method: "get",
    });
  }

  /**
   * 获取菜单树形列表
   *
   * @param queryParams 查询参数
   * @returns 菜单树形列表
   */
  static getList(queryParams: MenuQuery) {
    return request<any, MenuVO[]>({
      url: `${MENU_BASE_URL}`,
      method: "get",
      params: queryParams,
    });
  }

  /**
   * 获取菜单下拉数据源
   *
   * @returns 菜单下拉数据源
   */
  static getOptions() {
    return request<any, OptionType[]>({
      url: `${MENU_BASE_URL}/options`,
      method: "get",
    });
  }

  /**
   * 获取菜单表单数据
   *
   * @param id 菜单ID
   */
  static getFormData(id: number) {
    return request<any, MenuForm>({
      url: `${MENU_BASE_URL}/${id}/form`,
      method: "get",
    });
  }

  /**
   * 添加客户以及用户
   */
  static addCustomer(data: RuleForm) {
    return request({
      url: `${MENU_BASE_URL}/saveCustomerAndContact`,
      method: "post",
      data: data,
    });
  }
  /**
  @date: 2024-10-31 10:01:18
  下级客户
  */
  static getSubCustomer(data: subCustomerPage) {
    return request<any, LogPageCustomer>({
      url: `${MENU_BASE_URL}/subCustomer`,
      method: "post",
      headers: {
        "Content-Type": "application/json",
      },
      data: data,
    });
  }
  static updateCust(data: updateVo) {
    return request<any>({
      url: `${MENU_BASE_URL}/update`,
      method: "PUT",
      headers: {
        "Content-Type": "application/json",
      },
      data: data,
    });
  }
  static upCustomer(data: RuleForm) {
    return request({
      url: `${MENU_BASE_URL}/updateCustomerAndContact`,
      method: "put",
      headers: {
        "Content-Type": "application/json",
      },
      data: data,
    });
  }
  /**
   * 获取客户及其联系人信息
   *
   */
  static getselectCustomerAndContact(customerId: string) {
    return request<any, OptionType[]>({
      url: `${MENU_BASE_URL}/selectCustomerAndContact`,
      method: "get",
      params: {
        customerId: customerId,
      },
    });
  }

  /**
   * 修改菜单
   */
  static update(id: string, data: MenuForm) {
    return request({
      url: `${MENU_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  }

  /**
   * 删除菜单
   *
   * @param id 菜单ID
   * @returns 请求结果
   */
  static deleteById(id: number) {
    return request({
      url: `${MENU_BASE_URL}/${id}`,
      method: "delete",
    });
  }
}

export default CustomerAPI;

import { MenuTypeEnum } from "@/enums/MenuTypeEnum";

/** 菜单查询参数 */
export interface MenuQuery {
  /** 搜索关键字 */
  keywords?: string;
}

/** 菜单视图对象 */
export interface MenuVO {
  /** 子菜单 */
  children?: MenuVO[];
  /** 组件路径 */
  component?: string;
  /** ICON */
  icon?: string;
  /** 菜单ID */
  id?: number;
  /** 菜单名称 */
  name?: string;
  /** 父菜单ID */
  parentId?: number;
  /** 按钮权限标识 */
  perm?: string;
  /** 跳转路径 */
  redirect?: string;
  /** 路由名称 */
  routeName?: string;
  /** 路由相对路径 */
  routePath?: string;
  /** 菜单排序(数字越小排名越靠前) */
  sort?: number;
  /** 菜单 */
  type?: MenuTypeEnum;
  /** 菜单是否可见(1:显示;0:隐藏) */
  visible?: number;
}

/** 菜单表单对象 */
export interface MenuForm {
  /** 菜单ID */
  id?: string;
  /** 父菜单ID */
  parentId?: number;
  /** 菜单名称 */
  name?: string;
  /** 菜单是否可见(1-是 0-否) */
  visible: number;
  /** ICON */
  icon?: string;
  /** 排序 */
  sort?: number;
  /** 路由名称 */
  routeName?: string;
  /** 路由路径 */
  routePath?: string;
  /** 组件路径 */
  component?: string;
  /** 跳转路由路径 */
  redirect?: string;
  /** 菜单 */
  type?: MenuTypeEnum;
  /** 权限标识 */
  perm?: string;
  /** 【菜单】是否开启页面缓存 */
  keepAlive?: number;
  /** 【目录】只有一个子路由是否始终显示 */
  alwaysShow?: number;
  /** 参数 */
  params?: KeyValue[];
}

interface KeyValue {
  key: string;
  value: string;
}

/** RouteVO，路由对象 */
export interface RouteVO {
  /** 子路由列表 */
  children: RouteVO[];
  /** 组件路径 */
  component?: string;
  /** 路由属性 */
  meta?: Meta;
  /** 路由名称 */
  name?: string;
  /** 路由路径 */
  path?: string;
  /** 跳转链接 */
  redirect?: string;
}

/** Meta，路由属性 */
export interface Meta {
  /** 【目录】只有一个子路由是否始终显示 */
  alwaysShow?: boolean;
  /** 是否隐藏(true-是 false-否) */
  hidden?: boolean;
  /** ICON */
  icon?: string;
  /** 【菜单】是否开启页面缓存 */
  keepAlive?: boolean;
  /** 路由title */
  title?: string;
}
export interface updateVo {
  id: string;
  customerName: string;
  enableFlag: string;
}
export interface RuleForm {
  userId?: string;
  username: string;
  password?: string | number;
  idCardNo: string;
  userEnableFlag: string;
  roleIdList?: string[];
  other: string;
  storeId?: string;
  parentId?: string;
  storeName: string;
  address: string;
  lng?: number | string;
  lat?: number | string;
  storeEnableFlag: string;
  name: string;
  phone: string;
  customerId?: string;
}
export interface deviceVOData {
  // expiredTime: string;
  createTime?: string;
  creatorId?: string;
  deviceModelId?: string;
  deviceName: string;
  positionTime?: string;
  deviceCode: string;
  id?: string;
  customerVOList: any;
}
interface updatecustomer {
  id: String;
  customerName?: string;
  parentId: string;
  contactId?: number;
  enableFlag?: string;
}

interface customerQuery {
  customerName?: string;
  parentId: string;
  contactId?: string | number;
  enableFlag?: string;
}
interface userQuery {
  /** 用户头像 */
  avatar?: string;
  /** 部门ID */
  deptId?: number;
  /** 邮箱 */
  email?: string;
  /** 性别 */
  gender?: number;
  /** 用户ID */
  id?: number | string;
  /** 手机号 */
  mobile?: string;
  /** 昵称 */
  nickname?: string;
  /** 角色ID集合 */
  roleIds?: number[];
  /** 用户状态(1:正常;0:禁用) */
  status?: number;
  /** 用户名 */
  username?: string;
  /** 用户名称 */
  name?: string;
  /** 用户密码 */
  password?: string;
  /** 所属客户 */
  customerId?: string;
  /** 角色 */
  roleIdList?: string[];
  /** 手机号 */
  phone?: string;
  /** 状态 */
  enableFlag?: string;
  /** 创建时间 */
  createTime?: string;
}
export interface subCustomerPage {
  pages?: any;
  customerId: string;
}
export interface LogPageCustomer {
  current: number;
  pages: number;
  records: Array<any>;
  size: number;
  total: number;
}
